package com.zw.a.basic.a11.demo04_exercise;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

//Map案例: ArrayList嵌套HashMap集合.
public class Demo03 {
    public static void main(String[] args) {
        //1.定义ArrayList<HashMap<String, String>>集合, 存储三个元素, 每个元素都是一个双列集合, 具体如下:
        ArrayList<HashMap<String, String>> list = new ArrayList<>();
        //2.第一个双列集合, 记录的信息如下:
        // 孙策 大乔
        // 周瑜 小乔
        HashMap<String, String> sgyy = new HashMap<>();
        sgyy.put("孙策", "大乔");
        sgyy.put("周瑜", "小乔");

        //3.第二个双列集合, 记录的信息如下:
        // 郭靖 黄蓉
        // 杨过 大雕
        HashMap<String, String> sdxl = new HashMap<>();
        sdxl.put("郭靖", "黄蓉");
        sdxl.put("杨过", "大雕");

        //4.第三个双列集合, 记录的信息如下:
        // 令狐冲 任盈盈
        // 林平之 岳灵珊
        HashMap<String, String> xajh = new HashMap<>();
        xajh.put("令狐冲", "任盈盈");
        xajh.put("林平之", "岳灵珊");

        //5.把上述的三个双列集合当做元素对象, 添加到ArrayList集合中.
        list.add(sgyy);
        list.add(sdxl);
        list.add(xajh);

        //6.遍历ArrayList集合, 输出每个元素.
        //方式一: 根据键获取值.
        //6.1 遍历ArrayList集合, 获取每一个元素: HashMap<String, String>
        for (HashMap<String, String> hm : list) {
            //6.2 因为ArrayList集合的每个元素还是一个双列集合, 所以我们接着遍历.
            Set<String> keys = hm.keySet();
            //6.3 遍历, 获取双列集合的每一个键.
            for (String key : keys) {
                System.out.println(key + "..." + hm.get(key));
            }
            System.out.println();
        }
        System.out.println("---------------------------");
        //方式二: 根据键值对对象获取键和值.
        //6.1 遍历ArrayList集合, 获取每一个元素: HashMap<String, String>
        for (HashMap<String, String> hm : list) {
            //6.2 因为ArrayList集合的每个元素还是一个双列集合, 所以我们接着遍历.
            Set<Map.Entry<String, String>> entrys = hm.entrySet();
            //6.3 遍历, 获取双列集合的每一个键.
            for (Map.Entry<String, String> entry : entrys) {
                System.out.println(entry.getKey() + "..." + entry.getValue());
            }
            System.out.println();
        }

    }
}
